home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 0826.ZIP / TREF2D.ARC / T-REFAPX.DOC next >
Text File  |  1987-09-20  |  15KB  |  661 lines

  1.  
  2.  
  3.  
  4.              Appendix A - Turbo Pascal's System Defined Identifiers
  5.  
  6. Constants:
  7.  
  8.      Graphics Constants:
  9.  
  10.           Black          Blink          Blue           Brown
  11.           Cyan           Darkgray       Green          Lightblue
  12.           Lightcyan      Lightgray      Lightgreen     Lightmagenta
  13.           Lightred       Magenta        Red            White
  14.           Yellow
  15.  
  16.      Scalar Values:
  17.  
  18.           Bw40           Bw80           C40            C80
  19.           False          Maxint         Nil            Pi
  20.           True
  21.  
  22. Types:
  23.  
  24.      Scalars:
  25.  
  26.           Boolean        Byte           Char           Integer
  27.           Real
  28.  
  29.      Structured Types:
  30.  
  31.           Text
  32.  
  33. Variables:
  34.  
  35.      Structured Variables:
  36.  
  37.           Aux            Con            Err            Inp
  38.           Input          Heapptr        Kbd            Lst
  39.           Out            Output         Trm            Usr
  40.  
  41.  
  42.      DOS Control Variables:
  43.  
  44.           Auxinptr       Auxoutptr      Coninptr       Conoutptr
  45.           Constptr       Lstoutptr      Usrinptr       Usroutptr
  46.  
  47.      Memory Variables:
  48.  
  49.           Mem            MemW           Port           Portw
  50.  
  51. Procedures:
  52.  
  53.      String Procedures:
  54.  
  55.           Delete         Insert         Str            Val
  56.  
  57.  
  58.  
  59.  
  60.  
  61.                                25
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      I/O Procedures:
  71.  
  72.           Blockread      Blockwrite     Read           Readln
  73.           Write          Writeln
  74.  
  75.      File Handling Procedures:
  76.  
  77.           Append         Assign         Chain          Close
  78.           Erase          Execute        Flush          Longseek
  79.           Rename         Reset          Rewrite        Seek
  80.           Truncate
  81.  
  82.      Graphics Procedures
  83.  
  84.           Draw           Graphbackground               Graphcolormode
  85.           Graphmode      Graphwindow    Hires          Hirescolor
  86.           Palette        Plot           Textbackground Textcolor
  87.           Textmode
  88.  
  89.      Text Procedures
  90.  
  91.           Window
  92.  
  93.      I/O Device Procedures
  94.  
  95.           Auxout         Conout         Lstout         Usrout
  96.  
  97.      Heap Control Procedures
  98.  
  99.           Dispose        Freemem        Getmem         Mark
  100.           New            Release
  101.  
  102.      Other Procedures:
  103.  
  104.           Chdir          Clreol         Clrscr         Crtexit
  105.           Crtinit        Delay          Delline        Exit
  106.           Fillchar       Getdir         Gotoxy         Halt
  107.           Insline        Intr           Lowvideo       Mkdir
  108.           Msdos          Move           Normvideo      Nosound
  109.           Ovrpath        Randomize      Rmdir          Sound
  110.  
  111. Functions:
  112.  
  113.      String Functions:
  114.  
  115.           Concat         Copy           Length         Pos
  116.  
  117.      File Handling Functions:
  118.  
  119.           Eof            Eoln           Filepos        Filesize
  120.           Longfilepos    Longfilesize   Ioresult       Seekeof
  121.           Seekeoln
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                26
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      Heap Control Functions:
  137.  
  138.           Maxavail       Memavail       Ord            Ptr
  139.  
  140.  
  141.  
  142.      Conversion Functions:
  143.  
  144.           Chr            Hi             Lo             Round
  145.           Swap           Trunc          UpCase
  146.  
  147.      Arithmetic Functions:
  148.  
  149.           Abs            Arctan         Cos            Exp
  150.           Frac           Int            Ln             Sin
  151.           Sqr            Sqrt
  152.  
  153.      I/O Driver Functions:
  154.  
  155.           Auxin          Const          Conln          Usrin
  156.  
  157.      Scalar Functions:
  158.  
  159.           Odd            Pred           Succ
  160.  
  161.      Other Functions:
  162.  
  163.           Addr           Bdos           Bdoshl         Bios
  164.           Bioshl         Cseg           Dseg           Keypressed
  165.           Ofs            Paramcount     Paramstr       Random
  166.           Seg            Sizeof         Wherex         Wherey
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.                                27
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                    Appendix B - T-Ref Parser Error Messages
  203.  
  204. Parsing Errors:
  205.  
  206.      The  following is a list of the possible fatal parser error messages that
  207. will  appear if a syntactic or semantic error is detected during  the  parsing
  208. process:
  209.  
  210.      Error Number             Description
  211.  
  212.           2              Number length > 20
  213.           3              Lexical level > 20
  214.           4              String length > 132
  215.           5              "<symbol>" is unknown symbol
  216.          10              Real value expected
  217.          11              Unmatched lexical levels
  218.          12              Identifier expected
  219.          13              "<symbol>" expected
  220.          14              "<reserved word>" expected
  221.          15              Constant expected
  222.          16              Type identifier expected
  223.          18              Label expected
  224.          20              Identifier not declared
  225.          21              Identifier already declared
  226.          22              Data Element expected
  227.          23              Error in opening include file.
  228.  
  229.      <symbol> in error 5 is an ASCII symbol not recognized by Turbo Pascal.
  230.      <symbol>  in  error 13 is the symbol expected,  but was not found as  the
  231. next input token.
  232.      <reserved  word> in error 14 is one of the reserved words expected as the
  233. next token.
  234.  
  235.      See page ii for system limitations for errors 1, 2, 3, and 4.
  236.      Error 11 is called if,  at the end of the parse, the lexical level is not
  237. the same as when it started.
  238.      A data element,  as generated in error 22, is an individual piece of data
  239. within the INLINE statement.  See your Turbo Pascal manual for more details.
  240.      If one of these errors is detected during the parsing process,  the error
  241. will be printed on the screen in the message area (see figure 2) as well as on
  242. the source listing (if activated).   Hit any key to begin printing the  ident-
  243. ifier cross reference listing to the point the error was detected.
  244.  
  245.      It  must be repeated here that T-Ref was NOT designed to be  a  syntactic
  246. analyzer.   The  error messages are simply a tool to let you know something is
  247. wrong  with  the  program and that T-Ref cannot  successfully  determine  what
  248. should be done.   Therefore,  if you always follow T-Ref Rule #1 (see page 1),
  249. you should never have any problems in listing or cross referencing programs.
  250.  
  251. Memory Full error:
  252.  
  253.      Although T-Ref uses every bit of available system memory (up to 640K), it
  254. is  still possible,  for very large programs or for limited memory,  that  you
  255. could experience the following message:
  256.  
  257.  
  258.  
  259.                                28
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.           "Memory full error."
  269.  
  270. which means that T-Ref, in trying to save data about an identifier, ran out of
  271. memory.   If  you  have memory resident programs on your system while  running
  272. T-Ref  (such as a Ram Disk program),  reboot the system without  the  resident
  273. programs  and  rerun T-Ref.   This will make available every bit of  data  for
  274. T-Ref to use.   If you still experience this error,  you will have to  upgrade
  275. your  system with more memory,  or break up your program into workable  chunks
  276. (this is usually already done through the use of include files),  and run each
  277. module through T-Ref separately.
  278.  
  279. Ready Printer:
  280.  
  281.      T-Ref  checks the printing device on "LPT1:" and,  if it gets a  "Printer
  282. not ready" response, issues the message:
  283.  
  284.           "Ready Printer or hit ESC to return:"
  285.  
  286. Check the printer to make sure it is operational,  and when ready, hit any key
  287. (except ESC, which stops the parsing process).
  288.  
  289. Opening the input file:
  290.  
  291.      If  T-Ref is unable to open the specified input file,  it will issue  the
  292. following message:
  293.  
  294.           "Unable to open the input file."
  295.  
  296. This  means T-Ref could not find the file you wish to have parsed.   Check the
  297. specified directory (and subdirectory) you have set up.
  298.  
  299. Opening the output file:
  300.  
  301.      If  T-Ref  is unable to open the output file,  it  issues  the  following
  302. message:
  303.  
  304.           "Error in creating output file."
  305.  
  306. This  usually means that the number of files on the output drive and directory
  307. is  at its maximum.   You will need to insert another disk or erase a file  on
  308. the output directory.  Before erasing a file, make sure it is not one you need
  309. to keep!
  310.  
  311. Error in writing to file:
  312.  
  313.      If  T-Ref experiences an error message when trying to write to an  output
  314. file  (that  is,  output is not going to a printer),  it issues the  following
  315. message:
  316.  
  317.           "Error in writing to file."
  318.  
  319. Under normal circumstances, this implies the disk where the output is going is
  320. probably full.  You will need to insert a disk which has more available space.
  321.  
  322.  
  323.  
  324.  
  325.                                29
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      If,  for  any reason,  you get an error statement from T-Ref on code that
  335. compiles  properly  under Turbo Pascal,  please contact  Synergy  Software  of
  336. Nebraska.  We will make every effort to correct the problem.
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                30
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                     Appendix C - Backus-Naur Form of T-Ref
  401.  
  402. program ::= program_heading block "."
  403.  
  404. program_heading ::= [ PROGRAM <identifier> file_ident_list ";" ]
  405.  
  406. file_ident_list ::= [ "(" ident_list ")" ]
  407.  
  408. ident_list ::= <identifier> { "," <identifier> }
  409.  
  410. block ::= declaration_part compound_statement
  411.  
  412. declaration_part ::= { declaration_section }
  413.  
  414. declaration_section ::= label_declaration
  415.                       | const_declaration
  416.                       | type_declaration
  417.                       | var_declaration
  418.                       | proc_declaration
  419.                       | func_declaration
  420.  
  421. label_declaration ::= LABEL label { "," label } ";"
  422.  
  423. label ::= <integer>
  424.         | <identifier>
  425.  
  426. const_declaration ::= CONST const_definition { ";" const_definition } ";"
  427.  
  428. const_definition ::= untyped_const_definition
  429.                    | typed_const_definition
  430.  
  431. untyped_const_definition ::= <identifier> "=" constant
  432.  
  433. constant ::= <number>
  434.            | <string>
  435.            | <identifier>
  436.  
  437. typed_const_definition ::= <identifier> ":" type "=" typed_const_value
  438.  
  439. typed_const_value ::= constant { "," constant }
  440.                     | "(" array_list ")"
  441.                     | "[" constant { "," constant } "]"
  442.  
  443. array_list ::= constant { "," constant }
  444.              | "("  array_list  ")"
  445.                   {  ","   "(" array_list ")" }
  446.  
  447. type_declaration ::= TYPE type_definition { ";" type_definition } ";"
  448.  
  449. type_definition ::= <identifier> "=" type
  450.  
  451. type ::= simple_type
  452.        | structured_type
  453.        | pointer_type
  454.  
  455.  
  456.  
  457.                                31
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. simple_type ::= scalar_type
  467.               | subrange_type
  468.               | type_identifier
  469.  
  470. scalar_type ::= "(" ident_list ")"
  471.  
  472. subrange_type ::= constant ".." constant
  473.  
  474. type_identifier ::= <identifier>
  475.  
  476. structured_type ::= [ PACKED ] unpacked_type
  477.  
  478. unpacked_type ::= string_type
  479.                 | array_type
  480.                 | record_type
  481.                 | set_type
  482.                 | file_type
  483.  
  484. string_type ::= STRING "[" constant "]"
  485.  
  486. array_type ::= ARRAY "[" simple_type { "," simple_type } "]" OF type
  487.  
  488. record_type ::= RECORD field_list END
  489.  
  490. field_list ::= [ record_section { ";" record_section } ] [ ";" variant_part ]
  491.  
  492. record_section ::= ident_list ":" type
  493.                  | <null>
  494.  
  495. variant_part ::= CASE tag_field type_identifier OF variant { ";" variant }
  496.  
  497. tag_field ::= identifier ":"
  498.             | <null>
  499.  
  500. variant ::= case_label { "," case_label } ":" "(" field_list ")"
  501.           | <null>
  502.  
  503. case_label ::= constant
  504.  
  505. set_type ::= SET OF simple_type
  506.  
  507. file_type ::= FILE [ OF type ]
  508.  
  509. pointer_type ::= ^ <identifier>
  510.  
  511. var_declaration ::= VAR var_definition { ";" var_definition } ";"
  512.  
  513. var_definition ::= ident_list ":" type [ ABSOLUTE absolute_constant ]
  514.  
  515. absolute_constant ::= <integer> ":" <integer>
  516.                     | <identifier> [ ":" <integer> ]
  517.  
  518. proc_declaration ::= proc_heading block ";"
  519.                    | proc_heading FORWARD ";"
  520.                    | proc_heading EXTERNAL extern_desc ";"
  521.  
  522.  
  523.                                32
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533. proc_heading ::= [ OVERLAY ] PROCEDURE <identifier>
  534.                    [ "(" formal_parameter_list ")" ] ";"
  535.  
  536. formal_parameter_list ::= formal_param_section { ";" formal_param_section }
  537.  
  538. formal_param_section ::= [ VAR ] ident_list [ ":" <identifier> ]
  539.  
  540. func_declaration ::= func_heading block ";"
  541.                    | func_heading FORWARD ";"
  542.                    | func_heading EXTERNAL extern_desc ";"
  543.  
  544. func_heading ::= [ OVERLAY ] FUNCTION <identifier>
  545.                    [ "(" formal_parameter_list ")" ] ":" <identifier> ";"
  546.  
  547. extern_desc ::= <string>
  548.               | <identifier> "[" <integer> "]"
  549.  
  550. compound_statement ::= BEGIN statement { ";" statement } END
  551.  
  552. statement ::= simple_statement
  553.             | structured_statement
  554.  
  555. simple_statement ::= variable ":=" expression
  556.                    | procedure_call
  557.  
  558. variable ::= <identifier> option_list
  559.  
  560. option_list ::= <null>
  561.               | "." option_list
  562.               | "^"
  563.               | "[" expression { "," expression } "]"
  564.  
  565. expression ::= variable
  566.                  { [ "+" | "-" | "*" | "/" | DIV | MOD | SHL | SHR | OR | XOR
  567.                    | AND | IN | ">" | "<" | "=" | "<>" | "<=" | ">=" ]
  568.                        variable }
  569.  
  570. structured_statement ::= compound_statement
  571.                        | if_statement
  572.                        | case_statement
  573.                        | while_statement
  574.                        | repeat_statement
  575.                        | for_statement
  576.                        | with_statement
  577.                        | inline_statement
  578.  
  579. if_statement ::= IF expression THEN statement { ELSE statement }
  580.  
  581. case_statement ::= CASE expression OF case_element { ";" case_element }
  582.                         [ ELSE statement ] END
  583.  
  584. case_element ::= case_list ":" statement
  585.  
  586. case_list ::= constant { ".." constant } { "," case_list }
  587.  
  588.  
  589.                                33
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. while_statement ::= WHILE expression DO statement
  599.  
  600. repeat_statement ::= REPEAT statement { ";" statement }
  601.                          UNTIL expression
  602.  
  603. for_statement ::= FOR variable ":=" expression direction expression
  604.                      DO statement
  605.  
  606. direction ::= TO
  607.             | DOWNTO
  608.  
  609. with_statement ::= WITH variable DO statement
  610.  
  611. inline_statement ::= INLINE "(" code_element { "/" code_element } ")"
  612.  
  613. code_element ::= [ ">" | "<" ] data_element { [ "+" | "-" ] data_element }
  614.  
  615. data_element ::= <identifier>
  616.                | "*"
  617.                | <integer>
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.                                34
  656.  
  657.  
  658.  
  659.  
  660.  
  661.